// 用户认证工具

/**
 * 设置用户登录信息
 * @param {Object} userData - 用户数据
 */
export const setUserInfo = (userData) => {
  try {
    if (userData && userData.token) {
      localStorage.setItem('token', userData.token)
    }
    if (userData) {
      localStorage.setItem('userInfo', JSON.stringify({
        id: userData.id || userData.userId || Math.floor(Math.random() * 10000),
        username: userData.username || '23002944',
        ...userData
      }))
    }
  } catch (error) {
    console.error('设置用户信息失败:', error)
  }
}

/**
 * 获取用户信息
 * @returns {Object|null} 用户信息对象或null
 */
export const getUserInfo = () => {
  try {
    const userInfoStr = localStorage.getItem('userInfo')
    if (userInfoStr && userInfoStr !== 'undefined' && userInfoStr !== 'null') {
      return JSON.parse(userInfoStr)
    }
    return null
  } catch (error) {
    console.error('获取用户信息失败:', error)
    return null
  }
}

/**
 * 获取用户token
 * @returns {string|null} token字符串或null
 */
export const getToken = () => {
  try {
    const token = localStorage.getItem('token')
    return token && token !== 'undefined' && token !== 'null' ? token : null
  } catch (error) {
    console.error('获取token失败:', error)
    return null
  }
}

/**
 * 检查用户是否已登录
 * @returns {boolean} 是否已登录
 */
export const isLoggedIn = () => {
  const token = getToken()
  // 移除环境限制，确保在任何情况下都能创建临时登录状态
  if (!token) {
    // 自动创建一个临时用户信息用于测试
    const tempUserInfo = {
      id: Math.floor(Math.random() * 10000),
      username: '测试用户',
      token: 'mock_token_' + Date.now()
    }
    setUserInfo(tempUserInfo)
    return true
  }
  return !!token
}

/**
 * 用户登出
 */
export const logout = () => {
  try {
    localStorage.removeItem('token')
    localStorage.removeItem('userInfo')
    // 触发登出事件
    window.dispatchEvent(new CustomEvent('userLoggedOut'))
  } catch (error) {
    console.error('登出失败:', error)
  }
}

/**
 * 创建一个临时的登录状态（用于开发测试）
 */
export const createTempLoginState = () => {
  const tempUserInfo = {
    id: Math.floor(Math.random() * 10000),
    username: '临时测试用户',
    token: 'temp_token_' + Date.now()
  }
  setUserInfo(tempUserInfo)
  return tempUserInfo
}

// 将auth工具挂载到window上，方便在浏览器控制台调试
if (typeof window !== 'undefined') {
  window.appAuth = {
    setUserInfo,
    getUserInfo,
    getToken,
    isLoggedIn,
    logout,
    createTempLoginState
  }
}